fix: base64.py 'Incorrect padding' error #403
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix:
Update python implementation of 'atob' to properly reflect behaviour of JS 'atob' by padding the base64 with "==".
https://stackoverflow.com/questions/2941995/python-ignore-incorrect-padding-error-when-base64-decoding
Motivation:
This fixes a number of JavaScript implementations for different Cryptography logic which takes advantage of
atob
s behavior, much of this logic doesn't take into account the padding, however Python's base64 library does.Since padding is arbitrary we can append "==" to the string before decoding.
aGVsbG8gd29ybGQ
-> raisesbinascii.Error
aGVsbG8gd29ybGQ=
->hello world
aGVsbG8gd29ybGQ==
->hello world
aGVsbG8gd29ybGQ===
->hello world
and so on...
Examples:
Python - decode "hello world" no padding
binascii.Error: Incorrect padding
JavaScript - decode "hello world" no padding
'hello world'
Python - decode "hello world" with padding
b'hello world'